package Demo;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: DELL
 * Date: 2023-01-11
 * Time: 10:31
 */

import java.util.concurrent.PriorityBlockingQueue;

/**
 * 定时器构成:
 * 扫描线程 : 不断扫描里面的任务 观察是否到达任务执行时间
 * 优先级阻塞队列: 因为是定时器, 需要按照时间排行, 因此需要一个优先级阻塞队列
 * 队列中的每一个元素都是一个Task对象, 即任务对象且带有一个时间属性,队首元素就是即将执行的
 *
 * 在规定时间内安排任务 Schedule的实现
 */

class Timer {

    // 扫面线程
    private Thread t = null; // 私有变量封装避免外界获取

    // 带有阻塞功能的优先级队列
    PriorityBlockingQueue<MyTask> queue = new PriorityBlockingQueue<MyTask>();

    // 指定时间安排任务
    public void Schedule(Runnable runnable, long after) {
        //
    }


}

// Task描述任务 -- 定时器里的任务
class MyTask {

    // 需要执行的任务
    private Runnable runnable;

    // 该任务在某个时间执行
    private long time;

    // 由于存放于一个阻塞的优先级队列中, 因此具备任务和时间两个参数
    // runnable - 任务   time - 加入任务的时间
    public MyTask (Runnable runnable, long time) {

        this.runnable = runnable;
        this.time = time;

    }
}

public class Thread_Demo22 {

}
